package com.ruoyi.leave.service;

import com.ruoyi.leave.domain.WorkflowWaterPlanAdjust;
import com.ruoyi.manage.domain.dto.Plan;

import java.util.List;

/**
 * 用水计划调整Service接口
 *
 * @author ruoyi
 * @date 2024-01-12
 */
public interface IWorkflowWaterPlanAdjustService {
    /**
     * 查询用水计划调整
     *
     * @param id 用水计划调整ID
     * @return 用水计划调整
     */
    public WorkflowWaterPlanAdjust selectWorkflowWaterPlanAdjustById(String id);

    /**
     * 查询用水计划调整列表
     *
     * @param workflowWaterPlanAdjust 用水计划调整
     * @return 用水计划调整集合
     */
    public List<WorkflowWaterPlanAdjust> selectWorkflowWaterPlanAdjustList(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);

    /**
     * 新增用水计划调整
     *
     * @param workflowWaterPlanAdjust 用水计划调整
     * @return 结果
     */
    public int insertWorkflowWaterPlanAdjust(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);

    /**
     * 修改用水计划调整
     *
     * @param workflowWaterPlanAdjust 用水计划调整
     * @return 结果
     */
    public int updateWorkflowWaterPlanAdjust(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);

    /**
     * 批量删除用水计划调整
     *
     * @param ids 需要删除的用水计划调整ID
     * @return 结果
     */
    public int deleteWorkflowWaterPlanAdjustByIds(String[] ids);

    /**
     * 删除用水计划调整信息
     *
     * @param id 用水计划调整ID
     * @return 结果
     */
    public int deleteWorkflowWaterPlanAdjustById(String id);

    /**
     * 拾取任务
     *
     * @param workflowWaterPlanAdjust
     */
    void claimTask(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);

    /**
     * 归还任务
     *
     * @param workflowWaterPlanAdjust
     */
    void unClaimTask(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);

    /**
     * 完成任务
     *
     * @param workflowWaterPlanAdjust
     */
    void completeTask(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);

    /**
     * 驳回任务
     *
     * @param workflowWaterPlanAdjust
     */
    void rejectTask(WorkflowWaterPlanAdjust workflowWaterPlanAdjust);


    /**
     * 通过申请
     *
     * @param planId
     * @return
     */
    int completeTaskByPlanID(Long planId);

    /**
     * 驳回申请
     *
     * @param plan
     * @return
     */
    int rejectTaskByPlanID(Plan plan);

    /**
     * 审批(工业)
     *
     * @param plan
     * @return
     */
    public int examineIndustryAdjust(Plan plan);

    /**
     * 审批(农业)
     *
     * @param plan
     * @return
     */
    public int examineAgricultureAdjust(Plan plan);
}
